package com.yunbao.hujin.mymvpcommon.proxy;

import com.yunbao.hujin.mymvpcommon.factory.PresenterFactory;
import com.yunbao.hujin.mymvpcommon.mvp.base.BasePresenter;
import com.yunbao.hujin.mymvpcommon.mvp.base.BaseView;

/**
 * 不能写死这个工厂，那么我们需要使用者可以自定义，那么我们还需要给使用者提供一个设置的方法，
 * 我们定义一个接口提供设置工厂、获取工厂、获取Presenter的方法，
 * 然后让V层来实现这个接口，这样V层的子类就可以通过相应的方法使用了  on 2017/12/8.
 * <p>
 * 代理接口
 */

public interface PresenterProxyInterface<V extends BaseView, P extends BasePresenter<V>> {

    /**
     * 设置创建Presenter的工厂
     * @param presenterFactory PresenterFactory类型
     */
    void setPresenterFactory(PresenterFactory<V, P> presenterFactory);


    /**
     * 获取Presenter的工厂类
     * @return 返回PresenterFactory类型
     */
    PresenterFactory<V, P> getPresenterFactory();

    /**
     * 获取创建的Presenter
     * @return 指定类型的Presenter
     */
    P getPresenter();

}
